package be.groept.ace.cursusplanning.persistency.persistencyProvidersText;


import be.groept.ace.cursusplanning.model.AangebodenCursus;
import be.groept.ace.cursusplanning.persistency.DBMS_Tekstbestanden;
import be.groept.ace.cursusplanning.persistency.IPersistentieController;
import be.groept.ace.cursusplanning.persistency.IPersistentieProvider;
import be.groept.ace.cursusplanning.persistency.Persisteerbaar;
import be.groept.ace.cursusplanning.persistency.SaveStringBuilder;

/**
 * @author Gouke Leplat
 * 
 * Voorziet de klasse AangebodenCursus van een methode om de nodige informatie
 * te verzamelen om een object van deze klasse weg te schrijven in een tekstbestand
 */

public class PersistencyProviderAangebodenCursus implements IPersistentieProvider {

	AangebodenCursus aangebodenCursus;
	
	/**
	 * bepaalt welk object deze persistentieprovider behandelt
	 * @param pObj
	 * 			object van het type AangebodenCursus
	 */
	@Override
	public void setTarget(Persisteerbaar pObj) {
		this.aangebodenCursus = (AangebodenCursus) pObj;
		
	}
	
	/**
	 * 	geeft een array met strings terug aan de persistentiecontroller
	 * @param controller
	 * 		de persistentiecontroller waar de informatie naartoe moet gestuurd worden
	 * @return 
	 * 		array van String objecten
	 */
	@Override
	public Object[] getInfoToBeSaved(IPersistentieController controller) {
		
		SaveStringBuilder S = new SaveStringBuilder();
		
		Object[] output = new Object[0];
		
		output = S.CreateObject(aangebodenCursus,new Object[] {aangebodenCursus.getCursus(),
															aangebodenCursus.getLector(),
															aangebodenCursus.getLokaal(),
															aangebodenCursus.getTijdsMoment1Dag(),
															aangebodenCursus.getAantalPlaatsen()},output);

		
		for (int i = 0 ; i < aangebodenCursus.getInschrijvingen().size(); i++){
			output = S.Method("addInschrijvingen", new Object[] { aangebodenCursus.getInschrijvingen().get(i)},output);
		}
		
		((DBMS_Tekstbestanden) controller).writeObjectFile(aangebodenCursus.getTijdsMoment1Dag());
		
		return output;
	}



}
